﻿using System;
using Ewk.MachineLearning.Classification.Conversions;

namespace Ewk.MachineLearning.Clustering.MultidimensionalScaling
{
    public interface IEntityDifferenceContainer<T> : IDifferenceContainer<T>
        where T : struct, IComparable, IFormattable, IConvertible, IComparable<T>, IEquatable<T>
    {
        /// <summary>
        /// Gets a unique identifier for the i-th <see cref="EntityVector{T}"/> of the internal list.
        /// </summary>
        /// <param name="i">The index of the <see cref="EntityVector{T}"/> within the internal list.</param>
        /// <returns>The i-th <see cref="EntityVector{TElement}"/> of the internal list.</returns>
        string this[int i] { get; }

        /// <summary>
        /// Gets the type of the Entity that is represented by <see cref="EntityVector{T}"/> instances.
        /// </summary>
        Type EntityType { get; }
    }
}